← 返回首页
vLLM 源码2026-09-09 发布

vLLM-Ascend 源码解读

配套源码文档站:本文的完整配套导航已上线 —— vLLM Ascend 架构总览(源码导航),包含架构总览、各模块详解、全量源码查看器与性能故事,建议对照阅读。

vLLM-Ascend 是 vLLM 社区官方维护的昇腾 NPU 硬件插件,遵循 RFC: Hardware pluggable 的硬件可插拔设计,让 Transformer、MoE、Embedding、多模态等主流模型无需修改即可运行在昇腾 NPU 上。本文基于 v0.23.0 源码梳理其整体架构与核心模块。

一、项目定位

vLLM 本体通过 Platform 抽象层屏蔽硬件差异,vllm-ascend 作为独立插件在运行时注册 ascend 平台,接管设备管理、算子执行、通信与图引擎等能力。这种插件化设计的好处是:

二、整体目录结构

vllm_ascend/
├── platform/            # 平台注册与设备能力声明
├── worker/              # Worker 与 ModelRunner(v1 / v2 两套)
│   └── v2/              #   新版执行路径:aclgraph、采样、投机解码
├── model_executor/      # offloader 卸载器、kernel 预热
├── model_loader/        # 权重加载:netloader 弹性加载、rfork
├── ops/                 # 自定义算子 + Triton kernel 库
│   ├── fused_moe/       #   MoE 融合算子(dispatcher、router、eplb)
│   ├── triton/          #   Triton kernels:rms_norm、rope、fla、kda、mamba…
│   └── …                #   mla、gdn、dsa、activation、layernorm…
├── quantization/        # 量化方法:w8a8 / w4a8 / w4a4 / wna16 / kv_cache
├── sample/              # 采样器与 rejection sampler
├── spec_decode/         # 投机解码 proposer:eagle / mtp / ngram / dflash / dspark
├── eplb/                # MoE 专家负载均衡策略(EPLB、FlashLB 等)
├── patch/               # 对上游 vLLM 的适配补丁(platform / worker)
├── _310p/               # Ascend 310P 专用实现分支
├── xlite/               # 轻量化执行路径
├── observability/       # 可观测性:metrics 导出
└── profiler/            # torch_npu profiler 集成

三、核心模块解读

1. Worker 与 ModelRunner

worker/ 是推理执行的核心。v1 路径(model_runner_v1.py)负责稳定版调度;v2 路径(worker/v2/)是重构后的新版执行器,拆分出 model_states(模型状态机)、sample/(top-k/top-p、penalties、logprob)、spec_decode/(各投机解码 speculator 的 aclgraph 实现)等子模块。aclgraph_utils.py 封装了昇腾 ACL Graph 等价于 CUDA Graph 的捕获与重放逻辑。

2. Triton 算子库(ops/triton/)

这是源码中最值得精读的部分,大量 kernel 用 Triton 编写以适配昇腾的 Triton 后端:

每个 kernel 目录配有 docs/*.md 说明设计动机与实现细节,如 docs/rms_norm.md、docs/rope.md,是学习 Triton on Ascend 的第一手材料。

3. MoE 与 EPLB

ops/fused_moe/ 实现了完整的 MoE 执行链路:router(fused_topk / grouped_topk)、token dispatcher、shared/routed experts 与 finalize。eplb/ 提供专家负载均衡策略族:policy_default_eplb、policy_flashlb、policy_swift_balancer 等,由 policy_factory 统一创建,可在大规模 EP 部署下动态重排专家。

4. 量化体系(quantization/)

按 methods/ 下权重×激活位宽组织:

目录量化方案说明
w8a8/fp8_block、w8a8_dynamic/static、w8a8_mxfp8、w8a8_pdmix主流 W8A8 方案,支持 ModelSlim、compressed-tensors 配置
w4a8/、w4a4/w4a8、mxfp4、flatquant、laos_dynamic更低比特的权重激活联合量化
wna16/w4a16、w8a16仅权重量化
kv_cache/kv_c8KV Cache INT8 量化

configs/ 中的 modelslim_config(华为 ModelSlim 工具链)、fp8_config、compressed_tensors_config 负责解析 HF 模型自带的量化配置。

5. 投机解码(spec_decode/)

proposer 体系覆盖了当前主流方案:eagle_proposer(EAGLE/EAGLE-3,含 vwn 变体)、dspark_proposer、dflash_proposer / dflash2_proposer、medusa_proposer、ngram_proposer(含 NPU 版)、draft_proposer(标准 MTP 草稿模型)、suffix_proposer。配套 models/ 下有 deepseek_v4、kimi_k3、qwen3、minimax_m3 等模型的 MTP/draft 权重适配,验证层则由 sample/rejection_sampler.py 与 v2 的 autoregressive speculator 承担。

6. Patch 适配层

patch/platform/ 与 patch/worker/ 收纳对上游 vLLM 的运行时补丁:KV Cache 管理、分布式(HCCL PG 注册)、CUDA Graph、多进程 Executor、投机配置等。patch_v2/ 对应新版执行路径。这一层的设计原则是"能不 patch 就不 patch",随上游版本演进而收敛。

7. 其他值得关注的模块

四、建议的阅读路径

阅读提示:v2 执行路径(worker/v2)是未来的主力方向,新特性优先落在 v2;排查线上问题时 v1/v2 的行为差异值得留意。

源码版本:vllm-ascend v0.23.0(main 分支) · 仅供学习交流

华杉的技术博客 · 苏ICP备2026063680号-1
首页